package cn.yuanqiao.archive.liyong.mapper;

import cn.yuanqiao.archive.liyong.domain.YqdyDa;
import cn.yuanqiao.archive.xiaoxitongzhi.domain.YqXxtz;
import cn.yuanqiao.common.core.domain.entity.SysRole;
import cn.yuanqiao.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 我的订阅Mapper接口
 * 
 * @author sy
 * @date 2023-08-10
 */
public interface YqdyDaMapper 
{
    /**
     * 查询我的订阅
     *
     * @param yqdyDa 我的订阅主键
     * @return 我的订阅
     */
    public YqdyDa selectYqdyDaByDyId(YqdyDa yqdyDa);

    /**
     * 查询我的订阅
     *
     * @param yqdyDa 我的订阅主键
     * @return 我的订阅
     */
    public YqdyDa selectYqdyDaByDyDaId(YqdyDa yqdyDa);

    /**
     * 修改消息状态
     *
     * @param yqDyTable 我的订阅主键
     * @return 我的订阅
     */
    public int updateYqdyDaState(@Param("yqDyTable") String yqDyTable,@Param("yqDyDaTbale") String yqDyDaTbale,@Param("dyId") Long dyId,@Param("daId") Long daId);

    /**
     * 查询我的订阅列表
     *
     * @param yqdyDa 我的订阅
     * @return 我的订阅集合
     */
    public List<YqdyDa> selectYqdyDaList(YqdyDa yqdyDa);

    /**
     * 新增我的订阅
     *
     * @param yqdyDa 我的订阅
     * @return 结果
     */
    public int insertYqdyDa(YqdyDa yqdyDa);

    /**
     * 修改我的订阅
     *
     * @param yqdyDa 我的订阅
     * @return 结果
     */
    public int updateYqdyDa(YqdyDa yqdyDa);

    /**
     * 删除我的订阅
     *
     * @param yqdyDa 我的订阅主键
     * @return 结果
     */
    public int deleteYqdyDaByDyId(YqdyDa yqdyDa);

    /**
     * 批量删除我的订阅
     *
     * @param dyIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYqdyDaByDyIds(Long[] dyIds);

    /**
     * 查询我的订阅列表
     *
     * @param yqdyDa 我的订阅
     * @return 我的订阅集合
     */
    public List<YqdyDa> selectYqdyDaListByDyId(YqdyDa yqdyDa);

    /**
     * 查询档案的标题
     *
     * @param yqdyDa 档案ID
     * @return 档案标题
     */
    public String selectDaTitle(YqdyDa yqdyDa);

    /**
     * 新增我的订阅
     *
     * @param dyId 我的订阅
     * @return 结果
     */
    public int restock(@Param("yqDyDaTbale") String yqDyDaTbale,@Param("dyId") Long dyId, @Param("tjsj") Date tjsj,@Param("gjc") String gjc, @Param("updateTime") String updateTime ,@Param("itemTable") String itemTable, @Param("folderTable") String folderTable, @Param("daTable") String daTable);

    public int restockYqdyDa(@Param("yqDyDaTbale") String yqDyDaTbale,@Param("authority") List authority);
    public int restockYqdyDaBatch(@Param("tableName") String tableName, @Param("list") List<Map<String, Object>> authority);

    //根据关键词查询档案
    public List<Map<String, Object>> selectDa(@Param("dyId") Long dyId, @Param("userId") Long userId, @Param("tjsj") Date tjsj, @Param("gjc") String gjc, @Param("updateTime") String updateTime , @Param("itemTable") String itemTable, @Param("folderTable") String folderTable, @Param("daTable") String daTable);

    public String selectMenuId(@Param("tenantCode") String tenantCode,@Param("tenantCodeToUpperCase") String tenantCodeToUpperCase);
    //根据用户ID和用户编码查询角色列表
    public List<SysRole> selectRolePermissionByUserIdAndTenantCode(@Param("userId") Long userId, @Param("tenantCode") String tenantCode);

    //根据用户ID查询用户信息
    public SysUser selectUserById(Long userId);

    public int insertYqXxtz(@Param("yqXxtzTable") String yqXxtzTable, @Param("yqXxfbfwTable") String yqXxfbfwTable, @Param("id") Long id,@Param("msg") String msg,@Param("recordId") Long recordId,@Param("createTime") Date createTime,@Param("recipientsId") Long recipientsId);

    /**
     * 修改消息
     *
     * @param yqXxtzTable 我的订阅主键
     * @return 我的订阅
     */
    public int updateYqXxTzMsg(@Param("yqXxtzTable") String yqXxtzTable,@Param("yqXxfbfwTable") String yqXxfbfwTable,@Param("recordId") Long recordId,@Param("msg") String msg,@Param("userId") Long userId);

    /**
     * 修改消息状态（当未读数目为0时，将消息状态改为已读）
     *
     * @param yqXxtzTable 我的订阅主键
     * @return 我的订阅
     */
    public int updateYqXxTzRead(@Param("yqXxtzTable") String yqXxtzTable,@Param("yqXxfbfwTable") String yqXxfbfwTable,@Param("recordId") Long recordId,@Param("msg") String msg,@Param("userId") Long userId);

    /**
     * 查询档案状态
     *
     * @param yqdyDa
     * @return 档案状态
     */
    public int selectDaState(YqdyDa yqdyDa);

    public Long selectYqXxtzByRecordId(YqXxtz yqXxtz);
}
